{{tag>programmation BROUILLON}}


====== Prolog ======

Prolog est l'un des principaux langages de programmation logique.
Pour plus d'informations,  allez sur [[http://fr.wikipedia.org/wiki/Prolog|Wikipedia]].

Il existe plusieurs interpréteurs de Prolog sur Linux.

<note important>Attention ! Des différences d'interprétation du code Prolog peuvent exister d'un interpréteur à l'autre. C'est le cas par exemple entre SWI-Prolog et Sicstus Prolog lors de l'utilisation de la programmation logique par contrainte.</note>






===== SWI-Prolog =====

C'est l'un des interpréteurs les plus utilisés sous Linux. Il est développé par l'Université d'Amsterdam. [[http://www.swi-prolog.org/|Site officiel]]

Capacités : il possède un débuggeur graphique ainsi que plusieurs solveurs de contraintes.

==== Installation ====

Il faut juste [[:tutoriel:comment_installer_un_paquet|installez le paquet]] [[apt>swi-prolog|swi-prolog]] :
<code>sudo apt-get install swi-prolog</code>

Utiliser maintenant la commande prolog pour lancer l'interpréteur.
<code>prolog</code>


==== Utilisation avec Emacs ====

Il est possible d'installer la coloration syntaxique et l'interpréteur dans [[Emacs]].
Commencez d'abord par installer le paquet [[apt>prolog-el|prolog-el]] :
<code>sudo apt-get install prolog-el</code>

Ensuite éditez votre fichier **~/.emacs**
<code>gedit ~/.emacs</code>
pour y ajouter les lignes suivantes :
<file bash ~/.emacs>
;; Ajout du mode Prolog
(autoload 'run-prolog "prolog" "Start a Prolog sub-process." t)
(autoload 'prolog-mode "prolog" "Major mode for editing Prolog programs." t)
(autoload 'mercury-mode "prolog" "Major mode for editing Mercury programs." t)
(setq prolog-system 'swi)
(setq auto-mode-alist (append '(("\\.pl$" . prolog-mode)
                            ("\\.m$" . mercury-mode))
                           auto-mode-alist))
</file>

Voilà, l'interpréteur est installé. Maintenant, pour l'utiliser, ouvrez un fichier avec l'extension **.pl**, et tapez votre programme Prolog dedans. Pour l'interpréter, allez dans le menu **Prolog** et cliquez sur **Consult file**. Une invite apparaît alors en dessous, dans laquelle vous pouvez interroger votre programme Prolog.



===== GNU Prolog =====

Un autre interpréteur similaire à SWI-Prolog. Celui-ci est développé par l'INRIA. [[http://www.gprolog.org/|Site officiel]]

Capacités : il propose un solveur de contraintes sur domaine fini.


==== Installation ====

Cela se passe par l'installation du paquet [[apt>gprolog|gprolog]] :
<code>sudo apt-get install gprolog</code>


Utiliser maintenant la commande gprolog pour lancer l'interpréteur :
<code>gprolog</code>


===== TkECLiPSe =====

TkECLIPSe est un logiciel open-source pour le développement et le déploiement des applications de programmation par contraintes.

Il est idéal pour l'enseignement des aspects de problèmes combinatoires. Il contient plusieurs bibliothèques.

Grâce à son interface graphique, il est très pratique pour programmer en Prolog.

==== Installation ====

Commencez par choisir votre version : [[http://eclipseclp.org/Distribution|Distribution]].
Sélectionner le dossier adapté à votre architecture système : x86_64_linux.
Puis télécharger l'archive : [[http://eclipseclp.org/Distribution/Current/6.1_168_x86_64_linux/eclipse_basic.tgz]].

<code>
mkdir eclipse_basic
tar -zxvf eclipse_basic.tgz -C eclipse_basic
cd eclipse_basic/
</code>

Pour vérifier le type de votre architecture :
<code>
./ARCH
</code>

Puis lancez l'installation :
<code>
./RUNME
</code>

Le programme va vous demander où installer le programme et l'emplacement de votre [[Java|JRE]].

Une fois l'installation terminée, le message suivant s'affichera :

<code>
ECLiPSe installation done.
You should now add $ECLIPSEDIR/bin/i386_linux
to your PATH environment variable.
</code>

Pour cela, tapez la commande suivante en remplaçant $ECLIPSEDIR par le répertoire adéquat (exemple : /home/bob/eclipse_basic)
<code>
export PATH=$PATH:$ECLIPSEDIR/bin/i386_linux
</code>

==== Utilisation ====

Pour lancer tkeclipse :
<code>
tkeclipse
</code>

Vous pouvez maintenant commencer à coder :

{{:tkeclipse.png?500|TkEclipse}}

===== Sisctus Prolog =====

Sicstus Prolog. Cet interpréteur n'est pas libre, mais peut fonctionner sous Linux. [[http://www.sics.se/sicstus/|Site officiel]]

FIXME